package com.tianyadu.security.wiremock;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.ClassPathResource;

import java.io.IOException;

import static com.github.tomakehurst.wiremock.client.WireMock.*;

/**
 * @FileName: MockServer
 * @Description: Mock伪造服务响应信息服务
 * @author: xueyj
 * @create: 2018-12-05 21:03
 */
public class MockServer {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        // 连接服务端口
        configureFor(8062);
        //  清空服务信息
        removeAllMappings();
        // 加载配置文件信息
        mock("/order/1", "01");
        mock("/order/2", "02");
    }

    private static void mock(String url, String file) throws IOException {
        //  获取文件配置信息
        ClassPathResource resource = new ClassPathResource("mock/response/" + file + ".txt");
        //  文件字符串拼接，并指定编码格式
        String content = StringUtils.join(FileUtils.readLines(resource.getFile(), "UTF-8").toArray(), "\n");
        //  注册信息至WireMock服务WireMock.get(url):访问地址；willReturn：返回响应信息，aResponse：WireMock响应Response
        /**
         注册信息至WireMock服务
         stubFor：构造服务响应信息；
         get：WireMock.get请求；
         urlPathEqualTo：路径匹配；
         url：请求地址；
         willReturn：返回响应信息
         aResponse：WireMock.aResponse响应；
         withBody：返回相应信息body；
         content：相应内容；
         withStatus：相应状态码；
         */
        stubFor(get(urlPathEqualTo(url)).willReturn(aResponse().withBody(content).withStatus(200)));
    }
}
